﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Financeiro.Model
{
    public class ImpostosFolhaPagamento
    {

        private double salarioBase;

        public double SalarioBase
        {
            get { return salarioBase; }
            set { salarioBase = value; }
        }

        // não levaremos em conta os dependentes legais
        int dependentesLegais = 0;

        public ImpostosFolhaPagamento()
        {}

        public ImpostosFolhaPagamento(double salarioBase)
        {
            this.salarioBase = salarioBase;
        }


        public double valorINSS()
        {
            double valor = 0;

            // regras do INSS são relativos ao valor Bruto
            if (SalarioBase <= 1040.22)
            {
                valor = Math.Round(SalarioBase * 0.08, 2);
            }
            else if (SalarioBase <= 1733.70)
            {
                valor =  Math.Round(SalarioBase * 0.09, 2);
            }
            else if (SalarioBase <= 3467.40)
            {
                valor = Math.Round(SalarioBase * 0.11, 2);
            }
            else
            {
                valor = 381.41;
            }
            return valor;
        }


        public double valorIR()
        {
            double valor = 0;
            // regras do IR são relativos ao valor Bruto - INSS - R$ 150.69 por dependente legal
            double baseCalculo = SalarioBase - valorINSS() - 150.69 * dependentesLegais;

            if (baseCalculo <=  1499.15)
            {
                valor = 0;
            }
            else if (baseCalculo <= 2246.75)
            {
                valor = Math.Round((baseCalculo * 0.075), 2) - 112.43;
            }
            else if (SalarioBase <= 2995.70)
            {
                valor = Math.Round((baseCalculo * 0.15), 2) - 280.94;
            }
            else if (SalarioBase <= 3743.19)
            {
                valor = Math.Round((baseCalculo * 0.225), 2) - 505.62;
            }
            else
            {
                valor = Math.Round((baseCalculo * 0.275), 2) - 692.78;
            }
            return valor;
        }


    }
}
